package com.ruoyi.common.core.domain.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.annotation.Excel.Type;
import com.ruoyi.common.annotation.Excels;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 用户对象 sys_user
 *
 * @author ruoyi
 */
@Data
public class SysUser extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 用户ID */
    @Excel(name = "用户序号", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "用户编号")
    private Long userId;



    /** 查询客户条件 */
    private Long userIdTwo;

    /** 部门ID */
    @Excel(name = "部门编号", type = Type.IMPORT)
    private Long deptId;

    /** 团队ID */
    @Excel(name = "团队ID", type = Type.IMPORT)
    private Long teamId;

    /** 部门ID(分公司) */
    @Excel(name = "部门编号(分公司) ", type = Type.IMPORT)
    private Long companyId;

    /** (分公司) */
    @Excel(name = "(分公司) ", type = Type.IMPORT)
    private String companyName;

    /** 部门级别（0-总公司，1-分公司，2-小组，3-其它） */
    @Excel(name = "部门等级", type = Type.IMPORT)
    private Integer level;

    /** 签约比例（团队默认23%，经销商默认30%） */
    @Excel(name = "部门等级", type = Type.IMPORT)
    private Integer signingRatio;

    /** 部门名称 */
    @Excel(name = "部门名称", type = Type.IMPORT)
    private String deptName;

    /** 用户账号 */
    @Excel(name = "登录名称")
    private String userName;

    /** 用户昵称 */
    @Excel(name = "用户名称")
    private String nickName;

    /** 用户邮箱 */
    @Excel(name = "用户邮箱")
    private String email;

        /** QQ */
    @Excel(name = "QQ")
    private String qq;

    /** 手机号码 */
    @Excel(name = "手机号码", cellType = ColumnType.TEXT)
    private String phonenumber;

    /** 用户手机号码 */
    @Excel(name = "用户手机号码", cellType = ColumnType.TEXT)
    private String userPhone;

    /** 用户性别 */
    @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
    private String sex;

    /** 用户头像 */
    private String avatar;

    /** 密码 */
    private String password;

    /** 帐号状态（0正常 1停用） */
    @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
    private String status;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    /** 最后登录IP */
    @Excel(name = "最后登录IP", type = Type.EXPORT)
    private String loginIp;

    /** 用户类型（00系统用户，VIP,A搭配,B已发照片，C分析问题，D进群） */
    @Excel(name = "用户类型", type = Type.EXPORT)
    private String userType;


    /** 客户来源（1-朋友介绍，2-网络宣传，3-宣传彩页，4-题库测试） */
    @Excel(name = "客户来源", type = Type.EXPORT)
    private String userSource;


    /** 肤质问题 */
    @Excel(name = "肤质问题", type = Type.EXPORT)
    private String skinIssues;

    /** 肤质类型(1-混合型，2-油性，3-干性，4-中性，5-痘痘，6-斑点，7-敏感，8-眼部问题) */
    @Excel(name = "肤质类型", type = Type.EXPORT)
    private Integer skinType;

    /** 员工类型(1-管理员, 2-主管, 3-组长, 4-业务员 ) */
    @Excel(name = "员工类型", type = Type.EXPORT)
    private Integer employeeType;

    /** 所属区域（1-大区，2-片区，3-营业部） */
    @Excel(name = "所属区域", type = Type.EXPORT)
    private Integer region;

    /** 客户类型（1-新开发客户，2-VIP客户） */
    @Excel(name = "员工类型", type = Type.EXPORT)
    private Integer enterUserType;


    /** 是否成交（0-未成交，1-已成交） */
    @Excel(name = "是否成交", type = Type.EXPORT)
    private Integer isTransaction;


    /** 调查问卷 */
    @Excel(name = "调查问卷", type = Type.EXPORT)
    private String surveyQuestionnaire;


    /** 微信号 */
    @Excel(name = "微信号", type = Type.EXPORT)
    private String wechatAccount;


    /** 微信昵称 */
    @Excel(name = "微信昵称", type = Type.EXPORT)
    private String wechatNickname;


    /** 跟踪方ID */
    @Excel(name = "跟踪方ID", type = Type.EXPORT)
    private Long trackUserId;

    /** 跟踪方 */
    @Excel(name = "跟踪方", type = Type.EXPORT)
    private String trackUserDept;

    /** 跟踪方姓名 */
    @Excel(name = "跟踪方姓名", type = Type.EXPORT)
    private String trackUserName;


    /** 客户状态（1-成交客户，2-失效客户，3-潜在客户） */
    @Excel(name = "客户状态", type = Type.EXPORT)
    private Integer userState;


    /** 紧急情况（1-一般，2-紧急，3-方程紧急） */
    @Excel(name = "紧急情况", type = Type.EXPORT)
    private Integer emergency;


    /** 重要级别(1-重要，2-普通，3-非常重要) */
    @Excel(name = "重要级别", type = Type.EXPORT)
    private Integer importanceLevel;


    /** 客户照片 */
    @Excel(name = "客户照片", type = Type.EXPORT)
    private String userPhoto;


    /** 年龄 */
    @Excel(name = "年龄", type = Type.EXPORT)
    private Integer xia;

    /** 职业 */
    @Excel(name = "职业", type = Type.EXPORT)
    private String occupation;


    /**
     *角色名称
     */
    private String roleName;

    /**
     * 微信小程序open_id
     */
    private String openId;

    /**
     * 微信小程序second
     */
    private String openSecond;

    /**
     * 省编码
     */
    private String provinceCode;

    /**
     * 市编码
     */
    private String cityCode;

    /**
     * 区编码
     */
    private String areaCode;

    /**
     * 地址详情
     */
    private String addressDetails;

    /**
     * 身份证姓名
     */
    private String idCardName;

    /**
     * 身份证号
     */
    private String idCardNumber;

    /**
     * 身份证图片
     */
    private String idCardImg;
    /**
     * 业务Q群
     */
    private String businessQqGroup;
    /**
     * 紧急联系人
     */
    private String emergencyContact;
    /**
     * 紧急联系电话
     */
    private String emergencyPhone;

    /**
     * 户主姓名
     */
    @Excel(name = "户主姓名")
    private String openName;

    /**
     * 开户行
     */
    @Excel(name = "开户行")
    private String openingBank;

    /**
     * 银行账户
     */
    @Excel(name = "银行账户")
    private String bankAccount;

    /**
     * 保证金
     */
    private BigDecimal creditGold;



    /** 最后登录时间 */
    @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
    private Date loginDate;


    /** 订单开始时间 */
    @Excel(name = "订单开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
    private Date orderBeginTime;

    /** 订单结束时间 */
    @Excel(name = "订单结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
    private Date orderEndTime;

    /** 跟踪开始时间 */
    @Excel(name = "跟踪开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
    private Date trackBeginTime;

    /** 跟踪结束时间 */
    @Excel(name = "跟踪结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
    private Date trackEndTime;

    /** 入职日期开始时间 */
    @Excel(name = "入职日期开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
    private Date beginTime;

    /** 入职日期结束时间 */
    @Excel(name = "入职日期结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
    private Date endTime;

    /** 部门对象 */
    @Excels({
        @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
        @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
    })
    private SysDept dept;

    /** 角色对象 */
    private SysRole role;
    private List<SysRole> roles;

    /** 角色组 */
    private Long[] roleIds;

    /** 部门组 */
    private List<Long> deptIdList;

    /** 岗位组 */
    private Long[] postIds;

    /** 角色ID */
    private Long roleId;

    public boolean isAdmin()
    {
        return isAdmin(this.userId);
    }

    public static boolean isAdmin(Long userId)
    {
        return userId != null && 1L == userId;
    }
    public SysUser()
    {

    }

    public SysUser(Long userId)
    {
        this.userId = userId;
    }

    /**
     * 前端需要
     */
    private Long userConditionId;
}
